#include "stm32f10x.h"                  // Device header
#include "Delay.h"

#define LED_PIN GPIO_Pin_0
#define LED_INIT_PIN GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7
#define LED_GROUP GPIOA

int main(void)
{
	// 1. 使用 RCC 开启 GPIOA 的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	// 2. 使用 GPIO_Init 函数初始化 GPIO
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      // 开漏输出
	GPIO_InitStructure.GPIO_Pin = LED_INIT_PIN;           // 选择引脚: PA0~PA7
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     // 输出速度没有特殊要求选择 50MHz 即可
	GPIO_Init(LED_GROUP, &GPIO_InitStructure);            // 初始化 A 分组下的0引脚
	

	// 3. 使用输出 或者 输入的函数控制 GPIO 口。
	while(1)
	{
		GPIO_Write(LED_GROUP, ~0x0001);
		Delay_ms(100);
		
		GPIO_Write(LED_GROUP, ~0x0002);
		Delay_ms(100);
		
		GPIO_Write(LED_GROUP, ~0x0004);
		Delay_ms(100);
		
		GPIO_Write(LED_GROUP, ~0x0008);
		Delay_ms(100);
		
		GPIO_Write(LED_GROUP, ~0x0010);
		Delay_ms(100);
		
		GPIO_Write(LED_GROUP, ~0x0020);
		Delay_ms(100);
		
		GPIO_Write(LED_GROUP, ~0x0040);
		Delay_ms(100);
		
		GPIO_Write(LED_GROUP, ~0x0080);
		Delay_ms(100);
	}
}